Add clickable metadata support to embedded Victory bar charts - #96065
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
…ded-Victory-bar-charts
…tadata-support-to-embedded-Victory-bar-charts # Conflicts: # src/components/HTMLEngineProvider/HTMLRenderers/VictoryChartRenderer/context/VictoryChartContext.tsx # src/components/HTMLEngineProvider/HTMLRenderers/VictoryChartRenderer/parsers/processVictoryChartTree.ts
|
@hoangzinh Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
If this requires C+ review, I'll be reviewing this as part of project. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3c467b0a5c
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
trjExpensify
left a comment
There was a problem hiding this comment.
What's up with the axis here? On the spend page the values are dynamic based on the data set. This looks like it puts all of the bars below the first data point on the axis?
For the data on hover, why aren't we showing the same data as the Spend page?
CC: @Expensify/design @luacmartins
|
Yeah agree, I would think the y axis would use smaller amounts so the bars would be taller? That feels odd for sure. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b35f125d54
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
🤖 Review — clickable metadata on embedded Victory bar charts Solid, well-structured PR with good test coverage (parser metadata, geometry math, coordinate normalization). I dug into the two riskiest areas — the web coordinate-scaling and the new worklet hit-testing — and both check out. No blocking bugs found. A few non-blocking questions below. Verified correct:
Non-blocking questions / notes:
Findings above were verified against victory-native and react-native-gesture-handler/-web internals; confidence is high, but I didn't run the app — the manual/QA steps still stand. |
|
🤖 Regression scan I compared old vs. new behavior across every chart type that flows through the shared render/parse/interaction paths this PR touched (line, area, scatter, vertical bar, horizontal bar, pie, donut — both the embedded Concierge charts and the standalone analytics charts). No hard regressions found. Two behavioral changes are worth a conscious sign-off: 1. Existing vertical bar charts with a 2. Standalone Verified clean (no regression):
Findings verified from code (PR head |
|
Codex and Melvin pointed out that the expand/fullscreen modal still renders the non-interactive chart, so the tooltips and tap-to-search don't work there. Is that intentional for this PR or out of scope? |
I suggest expand modal support to be out of scope. The last commit has bug. Modal doesn't dismiss. Screen.Recording.2026-08-03.at.2.41.57.PM.mov |
Yeah, this is getting drawn out with increasing scope creep and fixing that is long. Going to undo last commit for now |
This reverts commit c113071.
|
cc @mollfpr |
Agree, that's a bug. Are you zoomed in or zoomed out by chance? Sometimes that adds the small gap there. |
No zoom. Normal view |
|
🚧 mollfpr has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/mollfpr in version: 9.4.49-0 🚀
|
Help site review — changes required ✅This PR adds interactive metadata to the embedded Victory bar charts Concierge renders in chat: on web you can now hover a bar for a tooltip and click a bar to open the matching expenses in Search. That's a new user-facing capability, and the help site didn't document it. Where it belongs: How Concierge Analyzes Spend covers asking Concierge about your expense data, but never mentioned that Concierge can return an interactive chart — so I added a short section there rather than creating a new article. Draft help site PR: #97738 — adds a task-based Scope & authoring notes
@inimaga, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR |
|
🚀 Deployed to production by https://github.com/arosiclair in version: 9.4.49-3 🚀
Bundle Size Analysis (Sentry): |

Held on:
https://github.com/Expensify/Web-Expensify/pull/54516https://github.com/Expensify/Web-Expensify/pull/54677Explanation of Change
This PR adds per-point metadata parsing for embedded Victory chart data, preserving
labelandsearchQueryfields and carrying them through the Victory chart renderer context.Vertical embedded bar charts should now show web hover tooltips from that metadata and navigate to Search when a bar has a
searchQuery.Fixed Issues
$ #92149
PROPOSAL: N/A
Tests
Automated Tests
Covered by added automated tests
Manual Test
Pre-requisite (Skip to Test Steps if testing in Staging/Prod):
Test Steps:
Issue.92149.mp4
Offline tests
QA Steps
Same as manual test steps above
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari